import path from 'node:path';
import { defineConfig, type UserConfig, type ConfigEnv, loadEnv } from 'vite';
import Uni from '@dcloudio/vite-plugin-uni';
import AutoImport from 'unplugin-auto-import/vite';
import ViteRestart from 'vite-plugin-restart';
import Components from '@uni-helper/vite-plugin-uni-components';
import { WotResolver } from '@uni-helper/vite-plugin-uni-components/resolvers';

// https://vitejs.dev/config/
export default defineConfig(
  async ({ mode }: ConfigEnv): Promise<UserConfig> => {
    const UnoCss = await import('unocss/vite').then((i) => i.default);
    const _env = loadEnv(mode, process.cwd(), 'env');
    const { UNI_PLATFORM } = process.env;
    console.log('运行平台', UNI_PLATFORM);
    return {
      envDir: './env', // 自定义env目录
      resolve: {
        alias: {
          '@': path.join(process.cwd(), './src')
          // '@img': path.join(process.cwd(), './src/static')
        }
      },
      define: {
        __UNI_PLATFORM__: JSON.stringify(UNI_PLATFORM)
        // __VITE_APP_PROXY__: JSON.stringify(VITE_APP_PROXY)
      },
      plugins: [
        Components({
          resolvers: [WotResolver()],
          dts: 'src/types/components.d.ts'
        }),
        Uni(),
        AutoImport({
          imports: ['vue', 'uni-app'], // 自动导入 Vue 和 UniApp 的 API
          dts: 'src/types/auto-imports.d.ts', // 自动生成类型声明文件
          eslintrc: {
            enabled: true // 生成 ESLint 配置文件
          }
        }),
        UnoCss(),
        ViteRestart({
          // 通过这个插件，在修改vite.config.js文件则不需要重新运行也生效配置
          restart: ['vite.config.js']
        })
      ]
    };
  }
);
